import { login, getUserInfo, getUserDetailById } from '@/api/user'
import { setToken, getToken, setTimeout, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'

const state = {
  // 定义全局token  数据持久化
  token: getToken(),
  userInfo: {}
}
const mutations = {
  // 存储token
  setToken(state, data) {
    setToken(data)
    state.token = data
  },
  // 删除token
  removeToken(state) {
    state.token = null
    removeToken()
  },
  // 设置用户信息
  setUserInfo(state, userInfo) {
    state.userInfo = { ...userInfo }
  },
  // 删除用户信息
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 发送请求获取token
  async login(store, data) {
    try {
      const res = await login(data)
      // console.log(res)
      // const token = res.data.data
      store.commit('setToken', res)
      setTimeout()
    } catch (error) {
      console.log('报错了')
    }
  },
  // 获取用户资料
  async getUserInfo(store) {
    const res = await getUserInfo()

    const baseInfo = await getUserDetailById(res.userId)
    // console.log(res)
    const Baseres = { ...res, ...baseInfo }
    // console.log(Baseres)
    store.commit('setUserInfo', Baseres)
    return Baseres
  },
  // 退出登录
  async logout(store) {
  // 删除token
    store.commit('removeToken') // 不仅仅删除了vuex中的 还删除了缓存中的
    // 删除用户资料
    store.commit('removeUserInfo') // 删除用户信息
    // 清空后来添加的路由配置
    resetRouter()
    // 清空菜单配置
    // 如果要调用兄弟之间的 mutations
    // 需要添加第三个参数, 指定查找模块是, 以根模块作为起点
    // root: true
    store.commit('permission/setRoutes', [], {
      root: true
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
